package edu.uoc.tds.server;

import edu.uoc.tds.common.*;
import edu.uoc.tds.bean.*;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.SQLException;
import java.util.*;
import javax.swing.JOptionPane;

public class RemotoImpl extends UnicastRemoteObject implements RemotoInterface {

    private static final long serialVersionUID = -6979182120879971625L;
    GestorDisco gestorDisc = null;
    UtilLenguaje txt = null;

    public RemotoImpl() throws RemoteException {
        super();
        try {
            gestorDisc = new GestorDisco();
            gestorDisc.initConnection();
        } catch (Exception eX) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eX.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
    }

    public Vector<MostrarCombo> listaTipoEventos() throws RemoteException {
        Vector<MostrarCombo> v = new Vector<MostrarCombo>();
        try {
            GestorSubTablas gE = new GestorSubTablas(gestorDisc.getConnection());
            Vector<TipoEvento> vT = gE.listaTipoEventos();

            for (Iterator<TipoEvento> it = vT.iterator(); it.hasNext();) {
                TipoEvento eq = it.next();
                MostrarCombo mCombo = new MostrarCombo(eq.getId_evento().intValue(), eq.getDescripcion());
                v.add(mCombo);
            }
        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return v;
    }


    public Vector<MostrarCombo> listaEventosCelebrados(Integer IdUniversidad, Integer IdCentro) throws RemoteException {
        Vector<MostrarCombo> v = new Vector<MostrarCombo>();
        try {
            GestorSubTablas gE = new GestorSubTablas(gestorDisc.getConnection());
            Vector<Evento> vT = gE.listaEventosCelebrados(IdUniversidad, IdCentro);

            for (Iterator<Evento> it = vT.iterator(); it.hasNext();) {
                Evento eq = it.next();
                MostrarCombo mCombo = new MostrarCombo(eq.getIdEvento().intValue(), eq.getNombre());
                v.add(mCombo);
            }
        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return v;
    }



    public Vector<MostrarCombo> listaUniversidades() throws RemoteException {
        Vector<MostrarCombo> v = new Vector<MostrarCombo>();
        try {
            GestorSubTablas gE = new GestorSubTablas(gestorDisc.getConnection());
            Vector<Universidad> vT = gE.listaUniversidades();

            for (Iterator<Universidad> it = vT.iterator(); it.hasNext();) {
                Universidad eq = it.next();
                MostrarCombo mCombo = new MostrarCombo(eq.getIdUniversidad().intValue(), eq.getNombre());
                v.add(mCombo);
            }
        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return v;
    }

    public Vector<MostrarCombo> listaPaises() throws RemoteException {
        Vector<MostrarCombo> v = new Vector<MostrarCombo>();
        try {
            GestorSubTablas gE = new GestorSubTablas(gestorDisc.getConnection());
            Vector<Pais> vT = gE.listaPaises();

            for (Iterator<Pais> it = vT.iterator(); it.hasNext();) {
                Pais eq = it.next();
                MostrarCombo mCombo = new MostrarCombo(eq.getIdPais().intValue(), eq.getDescripcion());
                v.add(mCombo);
            }
        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return v;
    }

    public Vector<MostrarCombo> listaCentrosUniversidad(Integer idUniversidad) throws RemoteException {
        Vector<MostrarCombo> v = new Vector<MostrarCombo>();
        try {
            GestorCentroDocente gE = new GestorCentroDocente(gestorDisc.getConnection());
            Vector<CentroDocente> vT = gE.listaCentrosUniversidad(idUniversidad);

            if (vT.size() > 1) {
                v.add(new MostrarCombo(-1, "Todos"));
            }

            for (Iterator<CentroDocente> it = vT.iterator(); it.hasNext();) {
                CentroDocente eq = it.next();
                MostrarCombo mCombo = new MostrarCombo(eq.getIdCentroDocente().intValue(), eq.getNombre());
                v.add(mCombo);
            }
        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return v;
    }

    public Integer altaContacto(String domicilio, Integer cp, String localidad,
            Integer idPais, String email, String web, String telefono) throws RemoteException {

        GestorSubTablas ge = new GestorSubTablas(gestorDisc.getConnection());
        Integer idContacto = null;
        try {
            ge.getConnection().setAutoCommit(false);
            idContacto = ge.altaContacto(domicilio, cp, localidad, idPais, email, web, telefono);
            ge.getConnection().commit();
        } catch (SQLException eSQL) {
            try {
                ge.getConnection().rollback();
            } catch (Exception eE) {
                JOptionPane.showMessageDialog(null,
                        txt.getMessage("err.rollback") + "\n" + eE.getMessage(),
                        txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
            }
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.sql") + "\n" + eSQL.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        } catch (Exception eS) {
            try {
                ge.getConnection().rollback();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null,
                        txt.getMessage("err.rollback") + "\n" + e.getMessage(),
                        txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
            }
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.gen") + "\n" + eS.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return idContacto;
    }

    public void altaCentro(String nombre, Integer idUniversidad, Integer idContacto) throws RemoteException {
        GestorCentroDocente ge = new GestorCentroDocente(gestorDisc.getConnection());

        try {
            ge.getConnection().setAutoCommit(false);
            ge.altaCentro(nombre, idUniversidad, idContacto);
            ge.getConnection().commit();
        } catch (SQLException eSQL) {
            try {
                ge.getConnection().rollback();
            } catch (Exception eE) {
                JOptionPane.showMessageDialog(null,
                        txt.getMessage("err.rollback") + "\n" + eE.getMessage(),
                        txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
            }
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.sql") + "\n" + eSQL.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        } catch (Exception eS) {
            try {
                ge.getConnection().rollback();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null,
                        txt.getMessage("err.rollback") + "\n" + e.getMessage(),
                        txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
            }
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.gen") + "\n" + eS.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
    }

    public CentroDocente getCentroDocente(Integer idCentroDocente) throws RemoteException {
        CentroDocente c = null;
        try {
            GestorCentroDocente gE = new GestorCentroDocente(gestorDisc.getConnection());
            c = gE.getCentroDocente(idCentroDocente);

        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return c;
    }

    public void editarContacto(Contacto contactoEditar, String domicilio, Integer cp, String localidad,
            Integer idPais, String email, String web, String telefono) throws RemoteException {

        try {
            GestorSubTablas gE = new GestorSubTablas(gestorDisc.getConnection());
            gE.editarContacto(contactoEditar, domicilio, cp, localidad,
                    idPais, email, web, telefono);

        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }

    }

    public void editarCentro(Integer idCentro, String nombre, Integer idUniversidad,
            Integer idContacto, Integer estado, String motivo, String fechaBaja) throws RemoteException {

        try {
            GestorCentroDocente gE = new GestorCentroDocente(gestorDisc.getConnection());
            gE.editarCentro(idCentro, nombre, idUniversidad, idContacto, estado, motivo, fechaBaja);

        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }

    }

    public List<CentroDocente> listaConsultaCentros(Integer idUniversidad, String nombre, Integer estado) throws RemoteException {
        List<CentroDocente> listaCentros = new ArrayList();
        try {
            GestorCentroDocente gE = new GestorCentroDocente(gestorDisc.getConnection());
            listaCentros = gE.listaConsultaCentros(idUniversidad, nombre, estado);

        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return listaCentros;
    }


    public Integer insertarEvento(Evento evento) throws RemoteException {
    	Integer idEvento = null;

		try {
			GestorEvento gE = new GestorEvento(gestorDisc.getConnection());
			idEvento = gE.insertarEvento(evento);
		} catch (SQLException sqle) {
			EGestioEventsException e = new EGestioEventsException(sqle);
			e.setDescripcion("pantGestionEventos.err.sql.descalta");
			e.setTitulo("pantGestionEventos.err.sql.titulo");
			throw new RemoteException(null, e);
		} catch (EGestioEventsException e) {
			throw new RemoteException(null, e);
		}

		return idEvento;
	}

	public void modificarEvento(Evento evento) throws RemoteException {
		try {
			GestorEvento gE = new GestorEvento(gestorDisc.getConnection());
			gE.modificarEvento(evento);
		} catch (SQLException sqle) {
			EGestioEventsException e = new EGestioEventsException(sqle);
			e.setDescripcion("pantGestionEventos.err.sql.descmodif");
			e.setTitulo("pantGestionEventos.err.sql.titulo");
			throw new RemoteException(null, e);
		} catch (EGestioEventsException e) {
			throw new RemoteException(null, e);
		}
	}

        public Evento getEvento(Integer idEvento) throws RemoteException {
		Evento evento = null;
		
		try {
			GestorEvento gE = new GestorEvento(gestorDisc.getConnection());
			evento = gE.getEvento(idEvento);
		} catch (SQLException sqle) {
			EGestioEventsException e = new EGestioEventsException(sqle);
			e.setDescripcion("pantGestionEventos.err.sql.descget");
			e.setTitulo("pantGestionEventos.err.sql.titulo");
			throw new RemoteException(null, e);
		}
		
		return evento;
	}


        public List<Object[]> consultarEventos(Evento evento, boolean cancelados, boolean finalizados) throws RemoteException {
		List<Object[]> eventos = null;

		try {
			GestorEvento gE = new GestorEvento(gestorDisc.getConnection());
			eventos = gE.consultarEventos(evento, cancelados, finalizados);
		} catch (SQLException sqle) {
			EGestioEventsException e = new EGestioEventsException(sqle);
			e.setDescripcion("pantGestionEventos.err.sql.descget");
			e.setTitulo("pantGestionEventos.err.sql.titulo");
			throw new RemoteException(null, e);
		}

		return eventos;
	}
                
    @Override
    public void modificarPrerequisitos(Evento evento) throws RemoteException {
        // TODO Auto-generated method stub
    }

    public Vector<MostrarCombo> listaTipoDoc() throws RemoteException {
        Vector<MostrarCombo> v = new Vector<MostrarCombo>();
        try {
            GestorSubTablas gE = new GestorSubTablas(gestorDisc.getConnection());
            Vector<TipoDocumento> vT = gE.listaTipoDoc();

            for (Iterator<TipoDocumento> it = vT.iterator(); it.hasNext();) {
                TipoDocumento eq = it.next();
                MostrarCombo mCombo = new MostrarCombo(eq.getIdTipoDocumento().intValue(), eq.getDescripcion());
                v.add(mCombo);
            }
        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return v;
    }

    public List<Usuario> listaConsultaUsuarios(Integer idUniversidad, Integer idCentro, String nombre,
            String apellidos, Integer estado, Integer perfil, String desde, String hasta,
            Integer tipoDoc, String numDoc) throws RemoteException {


        List<Usuario> listaUsuarios = new ArrayList();
        try {
            GestorUsuario gE = new GestorUsuario(gestorDisc.getConnection());
            listaUsuarios = gE.listaConsultaUsuarios(idUniversidad,
                    idCentro, nombre, apellidos, estado, perfil,
                    desde, hasta, tipoDoc, numDoc);

        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return listaUsuarios;

    }

    public List<InformePorcentajeAsistenciaEvento> listaInformePorcentajeAsistenciaEvento(Integer idUniversidad, Integer idCentro,
            Integer idTipoEvento, Date FechaInicio, Date FechaFin, Integer PorcentajeMin, Integer PorcentajeMax) throws RemoteException {
        List<InformePorcentajeAsistenciaEvento> listaInforme = new ArrayList();
        try {
            GestorInformes gE = new GestorInformes(gestorDisc.getConnection());
            listaInforme = gE.listaInformePorcentajeAsistenciaEvento(idUniversidad, idCentro, idTipoEvento, FechaInicio, FechaFin, PorcentajeMin, PorcentajeMax);

        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return listaInforme;
    }

    public Vector<MostrarCombo> listaTipoEventosCelebrados(Integer IdCentro) throws RemoteException {
        Vector<MostrarCombo> v = new Vector<MostrarCombo>();
        try {
            GestorSubTablas gE = new GestorSubTablas(gestorDisc.getConnection());
            Vector<TipoEvento> vT = gE.listaTipoEventosCelebrados(IdCentro);

            //if (vT.size() > 1) {
            //    v.add(new MostrarCombo(-1, "Todos"));
            //}

            for (Iterator<TipoEvento> it = vT.iterator(); it.hasNext();) {
                TipoEvento eq = it.next();
                MostrarCombo mCombo = new MostrarCombo(eq.getId_evento().intValue(), eq.getDescripcion());
                v.add(mCombo);
            }
        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return v;
    }
    
    public Object[][] getAsistentesEvento(Integer idEvento) throws RemoteException {
    	Object[][] resultado = null;
    	
    	try {
    		GestorAsistente gestorAsistente = new GestorAsistente(gestorDisc.getConnection());
    		resultado = gestorAsistente.getAsistentesEvento(idEvento);
    	} catch (SQLException sqle) {
			EGestioEventsException e = new EGestioEventsException(sqle);
			e.setDescripcion("pantAsistentesEventos.err.sql.descget");
			e.setTitulo("pantAsistentesEventos.err.sql.titulo");
			throw new RemoteException(null, e);
    	}
    	
    	return resultado;
    }


    public List<InformeIngresosTotales> listaInformeIngresosTotales(Integer idUniversidad, Integer idCentro,
                            Integer idTipoEvento, Integer IngresosMin, Integer IngresosMax) throws RemoteException{
        List <InformeIngresosTotales> listaInforme=new ArrayList();
        try {
            GestorInformes gE = new GestorInformes(gestorDisc.getConnection());
            listaInforme=gE.listaInformeIngresosTotales(idUniversidad, idCentro, idTipoEvento, IngresosMin, IngresosMax);

        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
       return listaInforme;
    }

    public List<InformeAsistentesEvento> listaInformeAsistentesEvento(Integer idEvento, Boolean Asistentes, Boolean NoAsistentes) throws RemoteException{
        List <InformeAsistentesEvento> listaInforme=new ArrayList();
        try {
            GestorInformes gE = new GestorInformes(gestorDisc.getConnection());
            listaInforme=gE.listaInformeAsistentesEvento(idEvento, Asistentes, NoAsistentes);

        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
       return listaInforme;
    }



    /***************************************************************************
    *
    * Eventos
    *
    * InscripciÃ³n
    *
    ***************************************************************************/
    public ArrayList<Object[]> getEventosIns (Date fecha, String tipoEvento) throws RemoteException
    {
        ArrayList<Object[]> listaEventos = new ArrayList<Object[]>();

        try
        {
            GestorInscripcion gI = new GestorInscripcion(gestorDisc.getConnection());
            listaEventos = gI.getEventosIns(fecha, tipoEvento);
        }
        catch(Exception eE)
        {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);


        }

        return listaEventos;
    }

    /***************************************************************************
    *
    * Detalles de eventos
    *
    * InscripciÃ³n
    *
    ***************************************************************************/
    public ArrayList<Object[]> getDetallesEventoIns (int idEvento) throws RemoteException
    {
        ArrayList<Object[]> listaEventos = new ArrayList<Object[]>();

        try
        {
            GestorInscripcion gI = new GestorInscripcion(gestorDisc.getConnection());
            listaEventos = gI.getDetallesEventoIns(idEvento);
        }
        catch(Exception eE)
        {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);


        }

        return listaEventos;
    }



    /***************************************************************************
    *
    * Prerrequisitos
    *
    * InscripciÃ³n
    *
    ***************************************************************************/
    public ArrayList<Object[]> getPrerrequisitosIns (int idEvento) throws RemoteException
    {
        ArrayList<Object[]> listaRequisitos = new ArrayList<Object[]>();

        try
        {
            GestorInscripcion gI = new GestorInscripcion(gestorDisc.getConnection());
            listaRequisitos = gI.getPrerrequisitosIns(idEvento);
        }
        catch(Exception eE)
        {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);


        }

        return listaRequisitos;
    }

    /***************************************************************************
    *
    * NÃºmero de eventos que son prerrequisitos y a los que ha asistido el usuario
    *
    * InscripciÃ³n
    *
    ***************************************************************************/
    public int getPrerrequisitosAsistidosIns (int id_evento, String idUsuario) throws RemoteException
    {


        int valor= 0;

        try
        {
            GestorInscripcion gI = new GestorInscripcion(gestorDisc.getConnection());
            valor = gI.getPrerrequisitosAsistidosIns(id_evento, idUsuario);
        }
        catch(Exception eE)
        {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);


        }

        return valor;

    }

    /***************************************************************************
    *
    * Eventos a los que se ha isnscrito el usuario en una fecha determinada
    *
    * InscripciÃ³n
    *
    ***************************************************************************/
    public int getInscritosFecha(String userId, Date fecha) throws RemoteException
    {
        int valor= 0;

        try
        {
            GestorInscripcion gI = new GestorInscripcion(gestorDisc.getConnection());
            valor = gI.getInscritosFecha(userId, fecha);
        }
        catch(Exception eE)
        {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);


        }

        return valor;

    }


    /***************************************************************************
    *
    * Alta de una nueva inscripciÃ³n
    *
    * InscripciÃ³n
    *
    ***************************************************************************/
    public void altaInscripcionIns(String userId, int idEvento, Date fecha) throws RemoteException
    {
        try
        {


            GestorInscripcion gI = new GestorInscripcion(gestorDisc.getConnection());
            gI.altaInscripcionIns(userId, idEvento, fecha);
        }

        catch(Exception eE)
        {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);

        }

    }

     public void insertarAsistente(Asistente asistent) throws RemoteException {
                try {
                    GestorUsuario gE = new GestorUsuario(gestorDisc.getConnection());
                    gE.insertarAsistente(asistent);
		} catch (Exception eE) {
                    JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
		}
	}


     public Usuario getUsuarioLogin(String codigo, String contrasena) throws RemoteException {
        Usuario c = null;
        try {
            GestorUsuario gE = new GestorUsuario(gestorDisc.getConnection());
            c = gE.getUsuarioLogin(codigo, contrasena);

        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return c;
    }

    public void eliminarEvento(Integer idEvento) throws RemoteException {
    	GestorEvento gestorEvento = new GestorEvento(gestorDisc.getConnection());
    	try {
			gestorEvento.eliminarEvento(idEvento);
		} catch (SQLException sqle) {
			EGestioEventsException e = new EGestioEventsException(sqle);
			e.setDescripcion("pantGestionEventos.err.sql.descbaja");
			e.setTitulo("pantGestionEventos.err.sql.titulo");
			throw new RemoteException(null, e);
		} catch (EGestioEventsException e) {
			throw new RemoteException(null, e);
		}
    }


        public List<InformeEventosAsistente> listaInformeEventosAsistente(String codigoAsistente,
                                    Integer idTipoEvento, Date FechaInicio, Date FechaFin,
                                    Boolean boolCerrado, Boolean boolSinCerrar) throws RemoteException{
        List <InformeEventosAsistente> listaInforme=new ArrayList();
        try {
            GestorInformes gE = new GestorInformes(gestorDisc.getConnection());
            listaInforme=gE.listaInformeEventosAsistente(codigoAsistente, idTipoEvento, FechaInicio, FechaFin, boolCerrado, boolSinCerrar);

        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
       return listaInforme;
    }


        public Vector<MostrarCombo> listaUsuariosPorCentro(Integer IdUniversidad, Integer IdCentro) throws RemoteException {
        Vector<MostrarCombo> v = new Vector<MostrarCombo>();
        try {
            GestorSubTablas gE = new GestorSubTablas(gestorDisc.getConnection());
            Vector<Usuario> vT = gE.listaUsuariosPorCentro(IdUniversidad, IdCentro);

            for (Iterator<Usuario> it = vT.iterator(); it.hasNext();) {
                Usuario eq = it.next();
                MostrarCombo mCombo = new MostrarCombo(eq.getCodigo(), eq.getNombre());
                v.add(mCombo);
            }
        } catch (Exception eE) {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
        }
        return v;
    }


          public ArrayList<Object[]> getDatosIns (String idUsuario, boolean valor) throws RemoteException
    {
        ArrayList<Object[]> listaDatosBan = new ArrayList<Object[]>();

        try
        {
            GestorInscripcion gI = new GestorInscripcion(gestorDisc.getConnection());
            listaDatosBan = gI.getDatosIns(idUsuario, valor);
        }
        catch(Exception eE)
        {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);


        }

        return listaDatosBan;

    }

       /***************************************************************************
    *
    * HistÃ³rico de eventos inscritos
    *
    * InscripciÃ³n
    *
    ***************************************************************************/
    public ArrayList<Object[]> getHistoricoIns (String idUsuario, Date desde, Date hasta, Date actual, String tipo) throws RemoteException
    {

        ArrayList<Object[]> lista = new ArrayList<Object[]>();

        try
        {

            GestorInscripcion gI = new GestorInscripcion(gestorDisc.getConnection());
            lista = gI.getHistoricoIns(idUsuario, desde, hasta, actual, tipo);
        }

        catch(Exception eE)
        {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);

        }

        return lista;

    }


    /***************************************************************************
    * Realiza el checkin
    *
    * @param String idUsuario El id del usuario
    * @param int idEvento
    *
    ***************************************************************************/
    public void setCheckin(String idUsuario,int id_evento) throws RemoteException
    {

     try
        {


            GestorInscripcion gI = new GestorInscripcion(gestorDisc.getConnection());
            gI.setCheckin(idUsuario, id_evento);
        }

        catch(Exception eE)
        {
            JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.impl") + "\n" + eE.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);

        }
    }


}
